home *** CD-ROM | disk | FTP | other *** search
- #include "..\Source\LastWolf.hpp"
-
-
- #define CONTROL_8253 0x43
- #define CONTROL_WORD 0x3C
-
- #define COUNTER_0 0x40
-
- #define TIME_KEEPER_INT 0x1C
-
- #define ORIGINAL_TIMER_HZ 65534
- #define TIMER_182HZ 6555
- #define TIMER_60HZ 0x4DAE
- #define TIMER_30HZ 0x965C
- #define TIMER_20HZ 0xE90B
- #define TIMER_18HZ 0xFFFF
-
- #define LOBYTE(n) (n & 0x00FF)
- #define HIBYTE(n) ((n>>8) & 0x00FF)
-
-
- #ifdef DOS
-
- // Pointer to the old timer routine.
- void (__interrupt __far *Old_Isr)();
-
-
- // The new timer routine.
- void __interrupt Timer()
- {
- timeCount++;
-
- if( timeCount % 10 == 0 )
- Old_Isr();
- }
-
- // Resets the timer count.
- void Change_Time( unsigned int new_count )
- {
- outp( CONTROL_8253, CONTROL_WORD );
- outp( COUNTER_0, LOBYTE(new_count) );
- outp( COUNTER_0, HIBYTE(new_count) );
- }
-
-
- void t_StartTimer()
- {
- timeCount=0;
-
- Change_Time(TIMER_182HZ);
-
- Old_Isr = _dos_getvect( TIME_KEEPER_INT );
- _dos_setvect( TIME_KEEPER_INT, Timer );
- }
-
- void t_EndTimer()
- {
- Change_Time( ORIGINAL_TIMER_HZ );
- _dos_setvect( TIME_KEEPER_INT, Old_Isr );
- }
-
-
- #else // (#ifdef DOS)
-
- void t_StartTimer()
- {
- timeCount=0;
- }
-
- void t_EndTimer()
- {
- timeCount=1;
- }
-
- #endif
-
-
-
-
-